home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-12-11 | 1.2 KB | 74 lines | [TEXT/CWIE] |
- unit PreserveA5;
-
- interface
-
- uses
- Types, Files;
-
- const
- XParamBlockRecExtra = 4;
-
- type
- XParamBlockRec = record
- completion: UniversalProcPtr;
- pb: ParamBlockRec;
- end;
- XParmBlkPtr = ^XParamBlockRec;
-
- var
- gPreCompletionProc:UniversalProcPtr;
-
- procedure StartupPreserveA5;
- function SetPreservedA5:Ptr;
- procedure RestoreA5(olda5:Ptr);
-
- implementation
-
- uses
- MyCallProc, MyStartup;
-
- {$IFC GENERATINGPOWERPC}
-
- procedure SetupPreserveA5;
- begin
- end;
-
- function SetPreservedA5:Ptr;
- begin
- SetPreservedA5:=nil;
- end;
-
- procedure RestoreA5(olda5:Ptr);
- begin
- olda5 := olda5; { Unused! }
- end;
-
- procedure PreCompletion(pbp: ParmBlkPtr);
- var
- prp: XParmBlkPtr;
- begin
- prp := XParmBlkPtr(ord(pbp) - XParamBlockRecExtra);
- CallIOCompletionProc(pbp, prp^.completion);
- end;
-
- {$ELSEC}
-
- procedure PreCompletion; external;
- procedure SetupPreserveA5; external;
-
- {$ENDC}
-
- function InitPreserveA5(var msg: integer): OSStatus;
- begin
- msg := msg; { Unused }
- gPreCompletionProc := NewIOCompletionProc(@PreCompletion);
- SetupPreserveA5;
- InitPreserveA5 := noErr;
- end;
-
- procedure StartupPreserveA5;
- begin
- SetStartup(InitPreserveA5, nil, 0, nil);
- end;
-
- end.